package main

import "fmt"

//值接收者和指针接收者的区别
//  区别：使用值接收者实现接口：结构体类型和结构体指针类型的变量都能存
//        使用指针接收者实现接口: 只能存结构体指针类型的变量
// 接口和类型的关系
//  同一个结构体可以实现多个接口
//定义接口类型 animal
type animal interface{
	move()
	eat(string)
}
//定义结构体类型 cat
type cat struct{
	name string
	feet int
}
//方法使用值接收者
// func (c cat)move(){
// 	fmt.Println("走猫步")
// }
// func (c cat)eat(food string){
// 	fmt.Printf("猫吃%s",food)
// }
//方法使用指针接收者
func (c *cat)move(){
	fmt.Println("走猫步")
}
func (c *cat)eat(food string){
	fmt.Printf("猫吃%s",food)
}
func main(){
	var a animal
	bb:=cat{
		name: "猫司机",
		feet: 4,
	}
	a=&bb
	a.eat("猫条")
	fmt.Println(a)
}